package com.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
* 自定义拦截器*/
public class Myinterceptor1 implements HandlerInterceptor {
    /*预处理方法，调用controller方法之前进行拦截 通常用于登陆的验证
    * true：放行
    * false：不放行*/
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("Myinterceptor1方法执行了。。。");
        /*true为放行，若不放行，可以请求转发或者重定向到别的页面*/
        request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
        return true;
    }

    @Override
    /*后处理方法，controller方法执行之后来到此方法*/
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("后处理拦截器执行。。。");
       /* 跳转不在执行了，后面的所有代码都不会执行*/
        request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
        System.out.println("你还执行吗？");
    }

    @Override
    /*最后处理方法，在所有的controller，jsp等执行完了之后进行执行，通常用于回收资源*/
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("所有的方法都执行了。。。");
    }
}
